package com.mybank.dao.impl;

import com.mybank.bo.exception.ClienteNulo;
import org.junit.Test;
import java.sql.DriverManager;
import com.mybank.domain.Cliente;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import static org.junit.Assert.*;

/**
 *
 * @author mjcali
 */
@RunWith(PowerMockRunner.class)
@PrepareForTest(DriverManager.class)
public class ClienteDaoImplTest {

    private ClienteDaoImpl instance = new ClienteDaoImpl();

    @Test
    public void buscarCliente_conClienteExistente_retornaCliente() throws ClienteNulo {
        String idCliente = "6";
        String apellido = "Gordon";
        String nombre = "Juan";
        String documento = "2015611";

        Cliente cliente = instance.buscarCliente(idCliente);
        assertNotNull(cliente);
        assertEquals(cliente.getId(), idCliente);
        assertEquals(cliente.getApellido(), apellido);
        assertEquals(cliente.getNombre(), nombre);
        assertEquals(cliente.getDocumento(), documento);
    }

    @Test
    public void buscarCliente_clienteInexistente_retornaNull() throws ClienteNulo {
        String idCliente = "111";

        Cliente cliente = instance.buscarCliente(idCliente);
        assertNull(cliente);
    }

    @Test(expected=ClienteNulo.class)
    public void buscarCliente_clienteNulo_lanzaExcepcionClienteNulo() throws ClienteNulo {
        instance.buscarCliente(null);
        fail("debería haber lanzado la excepcion Cliente nulo.");
    }
}
